#ifndef __BOUNDARY_BASE_HH__
#define __BOUNDARY_BASE_HH__
#include "setting.hh"
#include "../algorithm/includes/basis-function.hh"
#include <string>
#include <map>
#include <vector>

extern BasisFunction basis;

class BoundaryBase {
public:
  BoundaryBase();
  virtual ~BoundaryBase();
  void boundary_function(double* location, int index, double unitouternormalsum, double* var_j, double flag);
  void set_parameter(std::string parakey,double paravalue);
  virtual void special_boun(double* location, int index, double unitouternormalsum, double* var_j, int tmpp, int tmpd, double flag);
  std::map<std::string,double> para;
  std::vector<std::vector<std::string> > left;
  std::vector<std::vector<std::string> > right;
  // BasisFunction *bfutil;
private:
  void const_boun(int index,double* var_j, int tmpp, double flag);
  void const_boun(int index,double* var_j, int tmpp);  
  void zero_boun(double* var_j, int tmpp, double flag);
};
#endif  // __BOUNDARY_BASE_HH__
